package utils

import (
	"os"
	"fmt"
	"io/ioutil"
	"time"
)

func check(e error) {
	if e != nil {
		panic(e)
	}
}

/*
*  判断目录是否存在
*/
func DirExists(dir string)(bool,error){
	_, err := os.Stat(dir)
	if err ==nil {
		return true,nil
	}

	if os.IsNotExist(err){
		return false,nil
	}

	return false,err
}
/**
创建目录
**/
func Mkdir(dir string)(bool,error){
	res, _ := DirExists(dir)
	if res==false {
		dirErr := os.MkdirAll(dir,0755)
		if dirErr!=nil {
			return false,dirErr
		}else{
			return true,nil
		}
	}else{
		return true,nil
	}
}

// fileName:文件名字(带全路径)
// content: 写入的内容
func AppendToFile(fileName string, content string) error {
	// 以只写的模式，打开文件
	f, err := os.OpenFile(fileName, os.O_WRONLY, 0644)
	if err != nil {
		fmt.Println("cacheFileList.yml file create failed. err: " + err.Error())
	} else {
		// 查找文件末尾的偏移量
		n, _ := f.Seek(0, os.SEEK_END)
		// 从末尾的偏移量开始写入内容
		_, err = f.WriteAt([]byte(content), n)
	}
	defer f.Close()
	return err
}

func FilePutContents(filename string,content string,append bool)bool{
	now := time.Now()
	message := fmt.Sprintf("%04d-%02d-%02d %02d:%02d:%02d ",now.Year(),now.Month(),now.Day(),now.Hour(),now.Minute(),now.Second())
	content = message+content
	res, _ := DirExists(filename)
	if res && append{
		err := AppendToFile(filename,content)
		check(err)
	}else{
		messageByte :=[]byte(content)
		err := ioutil.WriteFile(filename,messageByte,0644)
		check(err)
	}
	return true
}